﻿using ProduceBasicData.Domain.InvoiceAndReceiptManage.Enum;

namespace ProduceBasicData.Api.DTO.InvoiceAndReceiptDto
{
    /// <summary>
    /// 发票DTO
    /// </summary>
    public class InvoiceDto
    {
        /// <summary>
        /// 主键id
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 系统编号
        /// </summary>
        public string? SystemNo { get; set; }

        /// <summary>
        /// 开票主题
        /// </summary>
        public string? InvoiceSubject { get; set; }

        /// <summary>
        /// 发票类型
        /// </summary>
        public string? InvoiceType { get; set; }

        /// <summary>
        /// 开票日期
        /// </summary>
        public DateTime? InvoiceDate { get; set; }

        /// <summary>
        /// 是否绑定销售订单（true：绑定销售订单开票；false：直接新增开票）
        /// </summary>
        public bool IsBindSalesOrder { get; set; }

        /// <summary>
        /// 收票方
        /// </summary>
        public string? Payee { get; set; }

        /// <summary>
        /// 发票号
        /// </summary>
        public string? InvoiceNo { get; set; }

        /// <summary>
        /// 销售单号（关联的销售订单编号，如264846、SDD264846）
        /// </summary>
        public string? SalesOrderNo { get; set; }

        /// <summary>
        /// 销售订单主题（关联的销售订单名称，如新产品销售订单005）
        /// </summary>
        public string? SalesOrderSubject { get; set; }

        /// <summary>
        /// 发票金额
        /// </summary>
        public decimal? Amount { get; set; }

        /// <summary>
        /// 附件（销售订单相关附件信息）
        /// </summary>
        public string? Attachment { get; set; }

        /// <summary>
        /// 出库状态（关联销售订单的出库情况，如未完成、已完成）
        /// </summary>
        public string? OutboundStatus { get; set; }

        /// <summary>
        /// 开票状态
        /// </summary>
        public InvoiceStatus Status { get; set; }

        /// <summary>
        /// 创建人
        /// </summary>
        public string? CreateName { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime CreateTime { get; set; }

        /// <summary>
        /// 更新人
        /// </summary>
        public string? UpdateName { get; set; }

        /// <summary>
        /// 更新时间
        /// </summary>
        public DateTime? UpdateTime { get; set; }

        /// <summary>
        /// 是否删除
        /// </summary>
        public bool Isdel { get; internal set; }
    }
}
